#
# Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com)
#
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#

import feature ;

lib socket ; # SOLARIS, QNXNTO
lib nsl ; # SOLARIS
lib ws2_32 ; # NT
lib mswsock ; # NT
lib ipv6 ; # HPUX
lib network ; # HAIKU

project
  : requirements
    <library>/boost/date_time//boost_date_time
    <library>/boost/system//boost_system
    <library>/boost/chrono//boost_chrono
    <library>/boost/regex//boost_regex
    <define>BOOST_ALL_NO_LIB=1
    <threading>multi
    <target-os>linux:<define>_XOPEN_SOURCE=600
    <target-os>linux:<define>_GNU_SOURCE=1
    <target-os>solaris:<define>_XOPEN_SOURCE=500
    <target-os>solaris:<define>__EXTENSIONS__
    <target-os>solaris:<library>socket
    <target-os>solaris:<library>nsl
    <target-os>windows:<define>_WIN32_WINNT=0x0501
    <target-os>windows,<toolset>cw:<library>ws2_32
    <target-os>windows,<toolset>cw:<library>mswsock
    <target-os>windows,<toolset>gcc:<library>ws2_32
    <target-os>windows,<toolset>gcc:<library>mswsock
    <target-os>windows,<toolset>gcc-cygwin:<define>__USE_W32_SOCKETS
    <target-os>hpux,<toolset>gcc:<define>_XOPEN_SOURCE_EXTENDED
    <target-os>hpux:<library>ipv6
    <target-os>qnxnto:<library>socket
    <target-os>haiku:<library>network
  ;

test-suite "asio" :
  [ run can_prefer_free_prefer.cpp ]
  [ run can_prefer_free_require.cpp ]
  [ run can_prefer_member_prefer.cpp ]
  [ run can_prefer_member_require.cpp ]
  [ run can_prefer_not_applicable_free_prefer.cpp ]
  [ run can_prefer_not_applicable_free_require.cpp ]
  [ run can_prefer_not_applicable_member_prefer.cpp ]
  [ run can_prefer_not_applicable_member_require.cpp ]
  [ run can_prefer_not_applicable_static.cpp ]
  [ run can_prefer_not_applicable_unsupported.cpp ]
  [ run can_prefer_not_preferable_free_prefer.cpp ]
  [ run can_prefer_not_preferable_free_require.cpp ]
  [ run can_prefer_not_preferable_member_prefer.cpp ]
  [ run can_prefer_not_preferable_member_require.cpp ]
  [ run can_prefer_not_preferable_static.cpp ]
  [ run can_prefer_not_preferable_unsupported.cpp ]
  [ run can_prefer_static.cpp ]
  [ run can_prefer_unsupported.cpp ]
  [ run can_query_free.cpp ]
  [ run can_query_member.cpp ]
  [ run can_query_not_applicable_free.cpp ]
  [ run can_query_not_applicable_member.cpp ]
  [ run can_query_not_applicable_static.cpp ]
  [ run can_query_not_applicable_unsupported.cpp ]
  [ run can_query_static.cpp ]
  [ run can_query_unsupported.cpp ]
  [ run can_require_concept_free.cpp ]
  [ run can_require_concept_member.cpp ]
  [ run can_require_concept_not_applicable_free.cpp ]
  [ run can_require_concept_not_applicable_member.cpp ]
  [ run can_require_concept_not_applicable_static.cpp ]
  [ run can_require_concept_not_applicable_unsupported.cpp ]
  [ run can_require_concept_static.cpp ]
  [ run can_require_concept_unsupported.cpp ]
  [ run can_require_free.cpp ]
  [ run can_require_member.cpp ]
  [ run can_require_not_applicable_free.cpp ]
  [ run can_require_not_applicable_member.cpp ]
  [ run can_require_not_applicable_static.cpp ]
  [ run can_require_not_applicable_unsupported.cpp ]
  [ run can_require_static.cpp ]
  [ run can_require_unsupported.cpp ]
  [ run prefer_free_prefer.cpp ]
  [ run prefer_free_require.cpp ]
  [ run prefer_member_prefer.cpp ]
  [ run prefer_member_require.cpp ]
  [ run prefer_static.cpp ]
  [ run prefer_unsupported.cpp ]
  [ run query_free.cpp ]
  [ run query_member.cpp ]
  [ run query_static.cpp ]
  [ run require_concept_free.cpp ]
  [ run require_concept_member.cpp ]
  [ run require_concept_static.cpp ]
  [ run require_free.cpp ]
  [ run require_member.cpp ]
  [ run require_static.cpp ]
  ;
